package jp.syuriken.snsw.terenaibot;

import java.net.URL;
import java.util.Date;

/**
 * ユーザー情報を格納する
 * 
 * @author $Author: snswinhaiku.lo@gmail.com $
 * @version 0.3
 */
public interface UserInfo {
	
	/**
	 * アカウントの作成日時を取得する。
	 * 
	 * <p>既定値：null</p>
	 * @return アカウントの作成日時
	 */
	Date getCreatedAt();
	
	/**
	 * 詳細を取得する。
	 * 
	 * <p>既定値：null</p>
	 * @return アカウント詳細
	 */
	String getDescription();
	
	/**
	 * フォロワー数を取得する。
	 * 
	 * <p>既定値：-1</p>
	 * @return フォロワー数
	 */
	int getFollowersCount();
	
	/**
	 * フォロー数を取得する。
	 * 
	 * <p>既定値：-1</p>
	 * @return フォロー数
	 */
	int getFriendsCount();
	
	/**
	 * 場所を取得する。
	 * 
	 * <p>既定値：null</p>
	 * @return 場所名
	 */
	String getLocation();
	
	/**
	 * 名前を取得する
	 * 
	 * <p>既定値：null</p>
	 * @return 名前
	 */
	String getName();
	
	/**
	 * ユーザーフレンドリーなユーザーIDを取得する。ユニークであるべきです。
	 * 
	 * <p>既定値：null</p>
	 * @return ユーザーフレンドリーなユーザーID (ユニーク)
	 */
	String getScreenName();
	
	/**
	 * タイムゾーンを取得する
	 * 
	 * <p>既定値：null</p>
	 * @return タイムゾーン
	 */
	String getTimeZone();
	
	/**
	 * ホームページなどのURLを取得する。
	 * 
	 * <p>既定値：null</p>
	 * @return URL
	 */
	URL getURL();
	
	/**
	 * ユニークなユーザーIDを取得する。ユニークである必要があります。
	 * 
	 * @return ユニークなユーザーID
	 * @see #getScreenName()
	 */
	String getUserId();
	
	/**
	 * UTCからのオフセットを取得する。
	 * 
	 * <p>既定値：0</p>
	 * @return UTCからのオフセット
	 */
	int getUtcOffset();
	
	@Override
	String toString();
}
